import request from "@/utils/request";

const FAMILY_BASE_URL = "/api/v1/family";

const FamilyAPI = {
  /**
   * 激活码加入
   * @param {Object} queryParams 查询参数
   */
  joinByActivationCode(data) {
    return request({
      url: `${FAMILY_BASE_URL}/joinByActivationCode`,
      method: "post",
      data: data,
    });
  },
  /**
   * 确定入谱申请
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  doEnterFamily() {
    return request({
      url: `${FAMILY_BASE_URL}/doEnterFamily`,
      method: "post",
    });
  },

  /**
   * 获取入谱申请列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getWaitForEnterFamily() {
    return request({
      url: `${FAMILY_BASE_URL}/waitForEnterFamily`,
      method: "post",
    });
  },

  /**
   * 获取家族分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getPage(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取我的家族分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getMyPage(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/page/me`,
      method: "get",
      params: queryParams,
    });
  },


  /**
   * 获取区域家族分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getRegionPage(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}/page/recommend`,
      method: "get",
      params: queryParams,
    });
  },


  /**
   * 获取家族树形列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 家族树形列表
   */
  getList(queryParams) {
    return request({
      url: `${FAMILY_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取家族下拉数据源
   * @param {boolean} [onlyParent] 是否只获取父级家族
   * @returns {Promise} 家族下拉数据源
   */
  getOptions(onlyParent) {
    return request({
      url: `${FAMILY_BASE_URL}/options/me`,
      method: "get",
      params: { onlyParent: onlyParent },
    });
  },

  /**
   * 获取家族表单数据
   * @param {string} id 家族ID
   * @returns {Promise} 家族表单数据
   */
  getFormData(id) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   * 获取家族表单数据
   * @param {string} code 家族ID
   * @returns {Promise} 家族表单数据
   */
  getFormDataByCode(code) {
    return request({
      url: `${FAMILY_BASE_URL}/${code}/formByCode`,
      method: "get",
    });
  },

  /**
   * 添加家族
   * @param {Object} data 家族表单数据
   * @returns {Promise} 请求结果
   */
  create(data) {
    return request({
      url: `${FAMILY_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改家族
   * @param {string} id 家族ID
   * @param {Object} data 家族表单数据
   * @returns {Promise} 请求结果
   */
  update(id, data) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 删除家族
   * @param {string} id 家族ID
   * @returns {Promise} 请求结果
   */
  deleteByIds(id) {
    return request({
      url: `${FAMILY_BASE_URL}/${id}`,
      method: "delete",
    });
  },

  /**
   * 加入家族
   * @param {string} id 家族ID
   * @returns {Promise} 请求结果
   */
  join(data) {
    return request({
      url: `${FAMILY_BASE_URL}/joinFamily`,
      method: "post",
      data: data,
    });
  },
};

export default FamilyAPI;
